The embodiments of the present invention relate to finding portions of a computer program that exhibit irregular performance. Modern computer programs are composed of functions. Within object oriented programming, functions also are referred to as “methods.” These functions are often complex in nature, exhibiting different behaviors under correspondingly different circumstances. This can mean that a function may exhibit varying performance according to the particular circumstances at hand when the computer program, and particularly that function, operates.
Developers have come to analyze computer programs in terms of the performance of individual functions. Performance profiling tools can provide information such as the total amount of time spent within a given function during execution of the computer program under analysis. Profiling tools can provide this information in the form of a call graph, for example.
As noted, because of the changing circumstances in which a function may operate during various runs of a computer program under test (CPUT), it may be the case that the function performs relatively quickly in some situations, while performing relatively slowly in other situations. The relative importance of a function's contribution to overall program performance may also vary according to the frequency of calls to the function during runtime of the CPUT. Identifying these conditions with available profiling and analysis tools can be difficult.